package main.com.cl.demo;

public class BubblesSort {

    public static void main(String[] args){
        int[]  arr= {1,3,2,4,9,10,7};
        bubbleSort(arr);
        System.out.println("请debug查看排序后的结构");
    }

    public static void bubbleSort(int[] arr){
        //冒泡排序的时间复杂度为O(n*n)
        int temp = 0;//临时变量
        boolean flag = false;//用于优化冒泡排序，判断是否进行过交换
        for (int j = 0; j < arr.length - 1; j++) {

            for (int i = 0; i < arr.length-1 -j ; i++) {
                if (arr[i] > arr[i+1]){
                    //三角交换
                    temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                    flag = true;
                }
            }
            //如果没有进入三角交换则证明数组已经有序，直接退出循环即可
            //如果进入了三角交换，把flag赋值为false，来判断下一次循环是否进入三角交换
            if (flag == false){
                break;
            }else {
                flag = false;
            }
        }
    }

}
